#
# aes是一种对称加密，所谓的对称加密就是加解密使用的密钥是同一个
# 常见的对称加密：aes des 3des
# 
# AES加密最常见的模式就是ECB模式和CBC模式，当然还有很多其他模式，他们都属于AES加密
# ECB和CBC模式两者的区别就是ECB不需要iv偏移量，而CBC需要
"""
MODE 加密模式
    常见的ECB,CBC
    ECB:是一种基础的加密方式,密文被分割成分组长度的相等的块（不足补齐）然后单独一个一个加密,一个一个输出组成密文
    CBC:是一种循环模式,前一个分组的密文和当前分组是明文异或或操作后加密,这样的目的就是增强破解难度
加密长度:
    16:AES-128
    24:AES-192
    32:AES-256
"""


from Crypto.Cipher import AES
import base64
if __name__ == "__main__":
    # MODE_ECB
    # 加密并base64编码   
    # key = "!!!!!!!!!!!!!!11".encode() # 16的倍数 密钥必须是12位字节或者24或者32位
    # aes = AES.new(key,AES.MODE_ECB)
    # enc = aes.encrypt('fsjgfefsssssewefewewrw5ujytuywfw'.encode()) # 加密
    # file_data = base64.b64encode(enc).decode()

    # # 解密
    # print(aes.decrypt(base64.b64decode(file_data.encode())).decode())


    #MODE_CBC模式
    iv = b'0123456789123456'
    aes = AES.new(b"!!!!!!!!!!!!!!11", AES.MODE_CBC, iv=iv)
    